Recoordination of common axis positioning

ABSTRACT

Methods and apparatus relating to either point-to-point or contouring control of the movable members of a machine tool, wherein two or more of such members are movable along a common axis relative to a base. In order to accept end-point commands numerically expressed in part coordinate along the common axis with reference to an origin in fixed relation to a workpiece or part mounted on the first such member, even though the servo controls or actual positioning operations can only act to bring the two members to positions measured in base coordinates with reference to a second origin fixed in relation to the base, a first signaled number representing the desired position of the second member in base coordinates is subtracted from a second signaled number representing the desired position, in part coordinates, for the first member. Such subtraction creates a changeable signaled third number representing the base coordinate positions to which the first member is to be moved under servo control. When the second member is moved, its displacement from one position to the next is added to the aforesaid and second numbers, so that the third number does not change but the first number does change to provide a numerical representation of the base coordinate position to which the second member will be moved under its servo control.

United States Patent [191. Kolell et al.

.1 1 Oct. 8, 1974 22 Filed:

[ RECOORDINATION OF COMMON AXIS POSlTIONlNG [75] lnventors: Norbert Kolell; James B. Simon,

both of Fond du Lac, Wis.

[73] Assignee: Giddings & Lewis, lnc., Fond du Lac, Wis.

Mar. 29, 1973 [21] Appl. No.: 346,063

[52] US. Cl. 318/574 [51] Int. Cl. GOSb 19/24 [58] Field of Search 318/573, 574

[5 6] References Cited UNITED STATES PATENTS 3,497,780 2/1970 Leenhouts 318/574 3,633,0ll. l/l972 Bederman... 318/574 X 3,656,124 4/1972 McGee 318/573 X 3.701.888 10/1972 McDaniel 318/574 X 3,715,644 2/1973 Bobrowicz 318/573 3,727,191 4/1973 McGee 318/573 X Primary Examiner-B. Dobeck Voit & Osann, Ltd.

[57] ABSTRACT Methods and apparatus relating to either point-topoint or contouring control of themovable members of a machine tool, wherein two or more of such members are movable along a common axis relative to a base. in order to accept end-point commands numerically expressed in part coordinate along the common axis with reference to an origin in fixed relation to a workpiece or part mounted on the first such member, even though the servo controls or actual positioning operations can only act to bring the two members to positions measured in base coordinates with reference to a second origin fixed in relation to the base, a first signaled number representing the desired position of the second member in base coordinates is subtracted from a second signaled number representing the desired position, in part coordinates, for the first mem ber. Such subtraction creates a changeable signaled third number representing the base coordinate positions towhich the first member is to be moved under servo control. When the second member is moved, its displacement from one position to the next is added to the aforesaid and second numbers, so that the third number does not change but the first number does change to provide a numerical representation of the base coordinate position to which the second member will be moved under its servo control.

4 Claims, 6 Drawing Figures PATENTEU BET 81374 3.840.793

SHEET 3 OF 4 RECOORDINATION F COMMON AXIS POSITIONING CROSS REFERENCE TO RELATED APPLICATIONS The present application is a division of copending US. application Ser. No. 279,232 filed Aug. 9, 1972 in the name of Norbert C. Kolell and assigned to the assignee of this application.

Although no assertion is made that the subject application is entitled to benefits of a filing date earlier than its actual filing date, cross reference is also here made to US. Pat. No. 3,656,124, issued Apr. 1 1, 1972 in the name of John K.-McGee and assigned to the assignee of the-subject application; and cross reference is also made to copending US. application Ser. No. 124,356, (now US. Pat. No. 3,727,191) filed Mar. 15, 1971 in the name of .John'K. McGee, and assigned to the assignee of the subject application. Hereinafter the aforesaid two patents. will be referred to respectively as Case I and Case II. The cross reference to these two cases is made for the purposeof setting forth the background environment of the present invention and for the purpose of providing descriptive material which is, for the sake of brevity, omitted from the present application and which may facilitate a full and complete understanding of the present invention.

BRIEF SUMMARY OF THE INVENTION The present invention relates in general to the control of machine tools and the like, and in particular to methods and apparatus for controlling the movable elements of a machine tool by a numerical contouring or point-to-point control system, and wherein two members of the machine or machine tool are both independently movable along a common axis.

As will be explained in more detail'below, it is often the current practice to construct the more sophisticated machine tools with a relatively large plurality of axes, i.e., directions along which relative movement between-a cutter and a workpiece may be effected by a multi-axia numerical control system. The several different axes are usually givencl etter designations according to industry-standard nomenclature, e.g., X, Y, Z, B and W axes. conventionally, Z axis motion is parallel to the axis about which a cutter (such as a drill, boring tool or ball end mill)'rota tes, and-is thus parallel to the longitudinal axis of an axially movable tool-carrying spindle. In some machine tools, the workpiece is mounted on a table supported on a saddle, the latter axis, by movement of thesaddle. Since the W axis motion of the saddle isparallel to the Z axis movement of the spindle, these latter two members are independently movable along what is really a single, common axis which may logically be called the w, z axis. When the saddle is commanded to move the workpiece toward or away from the spindle, the motion may be termed W motion; and when the spindle is commanded to move the cutter carried therein longitudinally toward or away from the workpiece, the movement may be termed Z motion. But in reality, both such motions are along only a single axis (herein designated by the two lower case letters wz),'and in a broad sense produce equivalent movement or positioning of the cutter tip relative to the workpiece.

The practical difficulty of such an arrangement, where the control of W and Z positioning movements are carried out independently by a numerical control director (in the same sense that X and Y axes are independently controlled by such a director), is that the programming of successive and different W and Z axis end point positions by randomly and alternatively using W and Z commands (as is often desired) requires the programming technician carefully to keep track" of all W and Z axis moves in order to know where the spindle will be located, at any time during the progress of the program, relative to the part coordinate origin of a workpiece movable with the saddle. Unless the operator carefully keeps track of these successive end points to be reached by the different W and Z moves which he calls for, he cannot accurately formulate successive blocks of command data which contain W and Z end point commands numerically expressed in part coordinates, i.e., which will bring the cutter to a newly desired position, designated and measured in part coordinates, relative to the workpiece.

The W, Z tracking" method and apparatus disclosed in the above-identified parent application Ser. No. 279,232 make it possible for a programming technician to formulate a succession of numerical commands for moving both first and second members to successive positions along a single axis, and wherein the numerical commands for at least one, and indeed both of such members, may be expressed simply as coordinate distances referenced to some origin on, or having a predetermined fixed location relative to, the workpiece. The programmer therefore need only consider the engineering drawings for the part to be machined. and need not consider, at least in any crucialsense, the

. positions to which the respective members must move in machine coordinates referenced to an origin fixed on the machine base.

It is the objective of the present invention to provide a method and apparatus by which successive w, z axis end point positions may be programmed totally in part coordinates for both W and Z moves, yet by which I travel of the two members movable along the W2 axis beyond their physical machine limits may be avoided simply through insertion of an auxiliary command within the program.

BRIEF DESCRIPTION OF THE DRAWINGS The foregoing and other objects of the invention will become apparent as the following description proceeds and is taken in conjunction with the accompanying drawings, in which:

FIG. 1 is a simplified and somewhat diagrammatic perspective view of an exemplary multi-axis machine tool having two of its members movable along a single axis;

FIG. 2 is a diagrammatic plan view of the principal elements or members of the machine tool shown in FIG. 1, and illustrates the directions of the axes. the

senses of movement along the axes, and the origins or reference points associated therewith;

7 FIGS. 3A and 38, when joined together as indicated, form a block diagram for a numerical control system of the general type disclosed in Case I and Case II, but supplemented to constitute an exemplary embodiment of the present invention;

FIG. 4 is a diagrammatic side elevation of the machine tool shown in FIG. 1, and illustrates the change in end point positions which occurs when an exemplary W command is executed; and

FIG. 5 is similar to FIG. 4 but illustrates the change in positions which occur when an exemplary Z command is executed.

While the method and apparatus of the present invention will be described in some detail with reference to a particular, exemplary embodiment, there is no intention that the invention be limited to such detail. On the contrary, it is intended here to cover all modifications, alternatives and equivalents which fall within the spirit and scope of the invention as defined by the appended claims.

DETAILED DESCRIPTION The horizontal boring, milling and drilling machine shown in FIG. 1 as an exemplary machine tool includes a base 11 and a column 12 as the supporting structure for the several relatively movable elements or members. A spindle 14 adapted to receive a cutter 15 is disposed in a headstock 16 vertically movable along ways 18 of the column, and the spindle is rotatably driven at a controlled speed by a spindle motor and gearing (not visible). The spindle 14 is axially movable lengthwise (along what is termed the Z axis) by a servomotor ZM associated with appropriate gearing or drive mechanism acting upon the quill in which the spindle is journaled. The cutter 15 is disposed for acting upon a workpiece l9which is locked to a work-supporting pallet 20 angularly movable and positionable (in a rotational direction here called the B axis) relative to a machine table 21 by action of a B axis servo motor BM and an appropriate connecting mechanism. The table 21 rests upon and is horizontally slidable back and forth along ways 24 formed on a saddle 25. The table is thus movable along what is here identified as the X axis of the machine by a suitable servomotor XM coupled to the table by a driving mechanism such as a lead screw and nut. The saddle 25 in turn is horizontally movable and positionable along ways 26 formed on the base 11 under the control of a servomotor WM and an appropriate drive mechanism such as a lead screw and nut. The saddle movement in an inwardly or outwardly direction is parallel to the rotational axis of the spindle 14, and thus parallel to the Z axis, and such movement is said to be along the W axis.

In this five axis" machine tool, the X, Y and Z axes are mutually orthogonal, and thus by simultaneously effecting plural axis component displacements at controlled and properly proportioned axis velocities, the cutter 15 may be moved relative to the workpiece 19 along any desired resultant path segment in space, and

at a desired resultant path velocity, called feed rate. Such successive path segments may be effected by linear, circular or parabolic interpolation through controlled energization of the several reversible axis servomotors from a multi-axis numerical control director of any suitable type familiar to those skilled in the art.

Moreover, the invention to be described can be applied with good advantage in point-to-point positioning systems which do not have contouring capability. For purposes of the present description, however, it will be assumed that the machine tool shown in FIG. 1 is controlled by a contouring director of the type illustrated and described in detail in Case I. This contouring director is generally illustrated in block form by FIGS. 3A and 3B in the subject application, and the basic organization and operation of the several components there shown only in block form will be fully understandable to thsoe skilled in the art after reading Case I or after both Case I and Case II.

FIG. 2, in the form of a diagrammatic and fragmentary plan view of the machine tool of FIG. 1, makes clear the relationships of the several movable parts of the machine tool and its X, Z and W motions. For purposes of description in the present application, the Y and B axes of motion can be ignored, and a two-axis control system may be considered to involve the X axis motions of the table 21 (by which the workpiece 19 is positioned horizontally in a direction normal to the spindle axis) and a second wz axis which lies in a horizontal direction nd is constituted either by motion of the saddle under the control of the servomotor WM or the motion of the spindle under the control of the servomotor ZM.

It will be understood that each of the axis servomotors is associated with a servo system adapted to receive changing numerical input signals which digitally represent the desired positions to which the respective movable machine members are to be located. Each such servo system includes some appropriate positionsensing feedback device (not shown here), such as a resolver or an Inductosyn (T.M.) slider and scale, which produces a signal either indicative of the actual position of the machine member or the difference between the numerically signaled desired position and the actual position. In response to any error between the desired and actual positions, the servomotors are energized to translate their respective machine members in a direction to reduce the error to zero. Such servos are usually constructed so that the instantaneous or following error is substantially zero or negligible as the numerically signaled value of the desired position dynamically changes. The details of suitable digital servo systems which accept input signals representing changing numerical values are disclosed and described in Case I by FIGS. 9a, 9b, 9d, 38a, 38b, 380, 40a, 40b, 40 d and at Column 99, line to Column 104, line 63. These portions of the Case I are hereby incorporated by reference for completeness.

The numerical values represented by input signals to the respective individual servo systems have significance only with respect to some datum point or origin on the machine tool itself. That is, the actual positionsensing and feedback devices can only provide signals which are referenced in machine coordinates to some point of origin, and thus the input signals to the servo systems must be similarly referenced. On the other hand, the programming technician who prepares successive sets or blocks of numerical program information will, as a matter of convenience, desirably prepare blocks of program data numerically defining successive end point positions to be reached by the cutter along the respective axes in terms of part coordinates, i.e., numerically valued coordinate positions referenced to a datum point on or fixed with respect to the workpiece itself. 'In this way, the programming technician can work directly from a drawing of the workpiece, and neednot be concerned with the particular relative loca 1 tion in which the workpiece is mounted upon the machine tool table or platform As shown in FIG. 2, part coordinates are measured along part axes W2 and X having an origin 0 on or fixed relative to the part blank or workpiece 19. The

' tor WM controls the location of the saddle 25 such that a reference point RPl, on or fixed relative to the saddle, reaches some commanded abscissa in machine coordinates. The machine coordinates are measured along machine axes W and X having an origin 0. It may be assumed that the origin 0' is located at some point on the base 11 so that it is appropriate also to use the term base coordinates as a synonym for the term machine coordinates". When the workpiece 19 was fixed to the table, 21, its origin 0 was offset by a distance WOFF from the reference point RPl, such offset here being shown as extending in a negative direction along the base axis W. In the present example, when the part origin 0 is at a machine coordinate location M0 the reference point RPl is at a machine coordinate location MW the difference in their numerical values being WOFF. Remembering that WOFF as shown in FIG. 2 is a negative offset, the relationship may be expressed as MW,,.= M0,, WOFF.

The'spindle servo system which includes the servomotor 2M operates to position a reference point RP2, on or fixed in relation to the spindle, relative to a machine axis, also having as its origin the point 0'. The Z axis is the converse (i.e., opposite sign) of the W axis because motion of the spindle toward the left as viewed in'FIG. 2- results in a decrease of the part coordinate PC, and thus a decrease (increase in a negative sense) in the corresponding 2 coordinate value. In the example shown, the spindle is at the coordinate location M2,, and the tool tip TT is offset to the left by a distance TOFF along the Z coordinate scale. The tool offset TOFF is in a negative direction along the Z axis but a positive direction along the W axis; and its magnitude may be changed from time-to-time as tools of different lengths are placed in the spindle.

It becomes apparent from FIG. 2 that saddle machine coordinate MW on the coordinate scale W corresponds to the corrdinate MW on the coordinate scale Z, where MW, MW,,. Similarly, the spindle machine coordinate M2,, on the 2 scale corresponds to M2,, on the scale W where M2, =MZ,,. But the really important position parameter, that is, the value of the part coordinate PC, may be increased in a positive sense either by moving the saddle to the left (positive W motion) or by removing the spindle to the right (positive Z motion). On the other hand, the part coordinate PC may be changed in a negative sense (so that it becomes less positive or more negative) by moving the saddle to the right (negative W motion) or by moving the spindle to the left (negative Z motion). Stated another way, each time the saddle'moves to' a new position along the W axis, the part coordinate PC changes even though the spindle does not move and the spindle machine coordinate M2,, does not change. Likewise, each time the spindle moves to a new position along the Z axis, the part coordinate PC changes even though the saddle does notmove and the saddle base coordinate MW, does not change. If the control system which supplies changeable numerical input signals to the W and Z servos acts entirely independently in response to W and Z command numbers read from a program tape, and if those programmed numbers are expressed in part coordinates, errors will inevitably arise because the position of either the saddle or the spindle which must be reached in base coordinates to establish the desired wz part coordinate value will differ as the spindle or the saddle, respectively, are moved to different machine coordinate locations.

In carrying out the present invention, a numerical control system is provided with its basic input data in the form of successive sets (blocks) of numerical command data which represent successive desird end point positions in part coordinates, i.e., the location which the tool tip Tl" disposed on one of the movable members 14, 25 is to reach relative to a point (origin 0) of the other of those members. Essentially any commanded wz part coordinate position can be reached by either W or Z movement depending upon whether the program input block contains a W or a Z address character. Then, the difference between the previous and the new programmed part coordinate values is added both to a changeable part coordinate command number and to a changeable machine coordinate number representing the machine position of one of the two members. The latter machine coordinate number is always included as a changeable term in a summation of values which establishes the servo input number signal for the other member. In this way, both the 'W and Z servo systems are supplied with changeable input numbers in machine coordinates which take on values to move either the saddle or the spindle to machine positions (expressible as coordinates M2,, or MZ as labeled in FIG. 2) which'produce the desired part coordinate position (PC, as labeled in FIG. 2). The method and apparatus summarized in the preceding portions of this paragraph will be more fully understood as the following description of an improved numerical control director proceeds. A. The Numerical Control Director Because the basic numerical control director associated with the machine tool 10 (FIG. 1) is relatively complex and has been fully described in Case I, needless repetition in the subject application is desirably avoided by cross reference to that case. Only a generalized block diagram of the director containing the improvements of the present invention is set forth in FIGS. 3A and 3B; and the reader may refer to Case I and Case II for details.

As shown in FIG. 3A, a tape reader 30 is adapted to receive and read" the successive blocks of digital, alpha-numeric data recorded on a suitable record medium, suchas a punched paper tape (not shown). The format of information stored on a punched paper tape and the details of the tape reader are familiar to those skilled in the art of numerical controls. It may be noted briefly, however, that the tape reader is associated with reader control logic circuits 31 which cause starting when a new block of data is required by the system and which cause stopping when one complete block of data has been read. Also, the tape reader produces output signals, in binary coded form representing one character at a time, which are passed to a decoder and signal routing circuits 32. Each multi-character word is preceded by an address character. For example, a block of command data calling for the cutter tip TT (FIG. 2) to reach a part coordinate position PC 10, and X 8 might contain the nine words N125, X-l-080000, Y+023000, W+l00000, F150, S200, G01, M35, EL. In this example, the N word designates block No. 125 in the sequence of blocks making up an entire program; the X word calls for an X axis part coordinate position of +8.0000 inches to be reached by the tool tip (as a result of travel of the table 21 from its previous position) as an end point; the Y word calls for the tool tip to reach as an end point a position of +2.3000 inches along the part coordinate scale for the Y axis by movement of the headstock 16 from it previous position; the W word calls for a wz axis part coordinate position of +I0.0000 to be reached by the tool tip relative to the origin by travel of the saddle 26 from its previous position; the word F150 designates that the resultant of the three component axis motions is to be accomplished at a feed rate of per minute; the S wor d value of 200 indicates that the spindle is to be operated at 200 R.P.M.; The G word of 01 is a mode designator code which here indicates that the director is to be operated with linear (as contrasted to circular) interpolation; the M word value of 35 is an auxiliary code which might, for example, designate that the cutter cooling fluid supply (not shown) is to be turned on; and the EL word simply signifies that the last line of character of one block of data has been read from the punched tape. When the EL signal is received and decoded, it causes the tape reader to stop, and the reader will be restarted by the control logic 31 when the director requires the next block of command data.

For purposes of describing the present invention, it is not necessary to consider the N, Y, B, S and G word signals which may be produced in response to reading of any given block of command tape data. For this reason, the signal-receiving and processing components for these words are not here shown or described. In the interest of simplification, only output trunks which receive and transmit X, W or 2, F, M and EL words are shown extending from the signal routing circuits 32 in FIG. 3A. Those skilled in the art with understand fully that when any X word is read, its numerical value is represented by signals which are transmitted to and stored in a buffer register Bl whose stored number is here designated XEP. Similarly, the signal routing circuits 32 respond to either a W or a Z word sensed by the tape reader 30 by supplying the numerical value of that word to a buffer storage register B2 whose stored number is designated wzEP. The lower case combination of the letters W2 is here used as a shorthand designation meaning w axis or z axis in view of the fact that any desired end point position expressed numerically in part coordinates can be reached by movement of either the saddle 25 or the spindle 14. When a new These signals are here labeled NDZ and NDW, indicating a new data Z" or new data W" and they will respectively reside in a logic 1 level only when the lastread block of information contains a W word or a Z word. As a programming rule, any oneblock of command data cannot contain both a W word and a Z word.

In similar fashion, the numerical value of any F word is stored in a buffer register B3 as Fb; and a numerical value of any M word read from a punched tape will be stored in a buffer register B4 as Mb. Th latter register is directly associated with a decoder 34 which thereupon produces a l output signal on the corresponding one of one hundred output lines here labeled M00 through M99.

For further details of the tape reader 30, its control logic 31, and the decoder and routing circuits 32, reference is made to these FIGS. 40m and 401 to FIGS. 9m and 9k, and to Column 27, line 58, through Column 33, line 13 in Case I.

In Case I, a numerical control director is described in some detail as controlling two axes (specifically X and Y axes) of motion although it is apparent that additional axes may be simultaneously controlled by duplication of certain portions of the apparatus and method steps. The present application will similarly treat two axes of control, but in this instance, those two axes will be designated as the X and W2 axes. It will be understood that all of the data processing components and procedures described in Case I and Case II for the Y axis are used in the exemplary embodiment here to be described, but they are to be considered as applying to a wz axis rather than a Y axis. In other words, in reading Case I and Case [I for supplemental information pertaining to the present disclosure, all of those portions relating to a Y axis are to be considered as now relating to a wz axis and thus pertaining to the control of end point positioning by motion of the saddle 25 .or the spindle 14 along a single common axis.

Referring again to FIG. 3A, a central arithmetic unit 35 (sometimes here called an adder" for brevity since it may algebraically add, and thus arithmetically add or subtract, and may be sequential addition or subtraction steps perform multiplication, division or other arithmetic functions) has multi-conductor input and output trunks AIT and ACT which extend throughout the director system. Two numbers supplied successively to the adder input over the trunk AIT will be added together, subtracted, compared or otherwise manipulated according to control signals supplied from an as sociated operation control 36, and the result will then appear in an answer register or accumulator within the adder so that signals representing the answer or result appear on the conductors of the output trunk AOT. Although details of such a central arithmetic unit 35 may vary, and are familiar to those skilled in the art, cross reference is here made to Columns 34-38 and FIGS. 9f, 9c and 14 in Case I for the specific organization of, and the symbols associated with, the central arithmetic unit 35.

The entire director of FIGS. 3A and 3B is timed" so that it functions in successive, iterative time steps of a predetermined short duration (for example, twenty microseconds) withinsuccessive cycles of predetermined duration AT (e.g., two milliseconds) by a clock and timing system 38 associated with a time base and digital sweep 39. The latter produces a reference squarewave at achosen frequency'(e .g., 500 hz.) which is transmitted to a sine wave shaper'40'for the digital servo sys- 20:0 to xx9, ten timing output lines for tens digit values xx to x9x, and ten output lines for hundreds digit values Oxx to9xx. A particular combination of three lines will receive a logic l voltage during each of the 1000 time steps which occur sequentially within each cycle period AT. By connecting the three appropriate timing output lines to an. AND gate, an enabling signal during any particular time step within a cycle can be obtained and used to perform gating functions such as the reading or writing of a number stored in some register into or from the adder 35. The time base and digital sweep 39 further supplies signals to a mode selector 41 associatedwith a control counter 42 having state output lines S1 through S16, and which is advanced in its count state by signals from an advance logic unit 44. In this way, mode signals 1, 2 and 3 are produced during different timing cycles so that different types of operations can be carried out within the span of a time cycle AT according to the particular mode which, is then in effect. The components 38, 39, 41, 42 and 44 are all described in details at Columns 19-27 with reference to FIGS. 9b, d, e; FIGS. 10a, b, 0; FIG. 11; and FIGS.

40b, :1, e in Case I, to which cross reference is made for details which need not be repeated here.

Besides the buffer registers Bl-B4 which receive the tape-read numbers EXP,'wzEP, Fb and Mb, the system of FIGS. 3A and 3B includes buffer registers BS-B8 which initially receive computed numbers from the adder 35 after initial'data processing operations on one block of information read from'the program tape. As here labeled, the registers 'B5B8 respectively receive numbers representing Ib, Kb, D and TFB. The symbol lb designatesthe X axis component of a path segment defined by a data block last read from a program tape; the symbol Kb designates the W2 axis component of that path segment; the symbol D represents the composite length .of that path segment; and the symbolTFB represents the time factor for that path segment. The significance of these symbols will be apparent from Case I and particularly from FIG. 5a in Case I which shows a typical path segment extending from a first pointto a second point, with the segment length being D and the X and Y axis components of .that segment being I and .I. In the present case, since a wz axis instead of a Y axis is being considered, the wz component K takes the place of the Y axis component i J described in Case By cross reference to Columns 6-9 and FIGS. 5a, b

' in Case I, itwill'be understood that a numerical quansignaledaccording to the relatity Q may be viewed as the product:

Q V TF (4) where TF AT/D (s) The quantity TF is called a time factor" and it may be utilized to compute the quantity Q. If AT remains constant (e.g., always has a value of twenty milliseconds) then the time factor TF will change as successive different blocks of information, calling for different path segment lengths D, are read in the tape reader 30. The number TFB held in register B8 is simply the time factor for the last-read block from the program tape, as fully explained in Case II.

The remaining storage registers labeled Al through A21 in FIGS. 3A and 38 may allbe considered active" registers which hold changeable value numbers representing different variables. They are active because they are used in the computations which generate the fmal changing number signals supplied to the servo system inputs to cause the movable members to progress from one end point to the next as commanded by data derived from a block of information earlier read from the programmed tape. The data in the active registers are thus called active block data. If a given block is numbered n, then it may be said that when block n data is in the active registers and the maching tool members are being moved to produce component axis motions resulting in composite movement along the n block path segment, the tape reader 30 is started to read the (n 1) block from the program tape into buffers B1-B4. Those newly read data are processed" to produce new values of the Ib, Kb, D and TFB numbers which are stored in buffers B5 B8. Thus, while block n is being executed by movement of the machine tool members to commanded end point part coordinates X,,, wz, the new values of XEP and wzEP become equal to the part coordinate numbers X(n 1), wz(n 1). Also, the buffers B3, B4 may receive new Pb and Mb numbers. New values are computed for lb, Kb, D and TFB; and these new values are stored in buffers BS-B9.

Then, when block n is fully executed, the information in the buffer registers is transferred to the active registers so that theactive block becomes (n l); and the tape reader 30 is started to read in block (n 2) information from the program tape. More specifically, the first part of this transfer procedure involves reading the buffer numbers lb and Kb from buffers B5 and B6 into the active registers A3 and A4, where they become the active values I and K. The numbers XEP and wzEP are read from buffers B1 and B2 and written into active registers Al and A2 where they become the new active numbers XCEP and wzCEP thus representing the end point part coordinates to be reached. The numbers TFB and Fb are read from buffers B8 and B3 and written into active registers A10 and A5 where they be come the active time factor TFA and the active feed rate FA. The system then proceeds to supply changing numerical input signals to the servo systems so that the newly transferred block is executed immediately following completion of the preceding block.

All of the buffer and active registers which may be desirable for a complete numerical control director (as described in Case land Case II) are not here shown, but those which appear in FIGS. 3A and 38 will serve to make clear the method and the apparatus for carrying out the present invention. The remaining active registers-shown in FIGS. 3A and 38 hold numbers which are changed by iterative computations, as described in Case I and Case II. By way of review, the nature of these changing numbers may be briefly summarized:

Registers A6 and A7 hold target part coordinate values XCP and wzCP which are updated during each cycle period AT by macromove amounts AX and Awz.

- Registers A8 and A9 hold the macromove numbers AX and Awz applicable for the X and W2 axes, and which are computed such that their magnitudes are proportional both to the desired path feed rate number FA and the magnitudes of the respective axis components I and K.

Registers A11, A12 and A13 hold numbers XMP, WMP and ZMP which represent in machine coordinates the target positions to be reached during each cycle period AT, these numbers taking into account any applicable offsets (and at least one of these numbers being especially formulated as hereinafter described). Register A14 holds the number Q which is periodically computed as being equal to the product of V and TFA, where V is the desired path velocity which is equal to or derived from the commanded feed rate FA.

The number Q is used to compute the values of AX and Awz, as noted above.

' changing numerical values.

Registers A19, A20, A21 are storage registers which signal numbers representing offsets WOFF, TOFF and ZOFF. Such numbers may be derived in the adder and read into these offset storage registers, but in a pre ferred and simplified form, the registers may be constituted as sets of digit switches permitting the desired values to be manually dialed in by setting knobs or thumb wheels here shown. The three offset numbers are not frequently changed.

In general, the active registers are identical in organization and operation to those shown and described in Case I, especially in FIGS. 9 and 40 and at Columns 33 and 34, to. which cross reference is made. Except for the WOFF, TOFF, ZOFF and ZTM numbers, the symbols here used are the same as those employed in Case I (except as noted above, that wz replaces Y as an axis designation). The TFB and TFA numbers are not specifically treated in Case I, but registers for these latter numbers, and the control of such registers, are described in Case II, to which cross reference is also made. In any event, the TFB and TFA registers are not in any sense critical in carrying out the present invent1on.

It will be helpful to note briefly that substantially all of the buffer and active registers Bl-B8 and Al-'A21 have read gates RG which lead from the register output to the adder input trunk AIT. They further have write gates WG interposed between the adder output trunk AOT and the register input. When any read gate R6 is enabled (opened), the stored binary signals, and thus the stored number, from the associated register is fed via AIT to the adder input, and without destroying or changing the stored number. On the other hand, when any write gate W6 is enabled (opened), the signals then existing on the adder output trunk AOT are transferred into the associated register, destroying the con tent previously held in that register. The buffers BB4 normally do not require write gates'because the receive input signals directly from the decoder 32; and the active registers Al9-A21 do not necessarily require write gates since, as here shown, the stored numbers may be created or changed by manually setting thumb wheel digit switches.

In order to time and control the reading and writing of signals from or into the various registers, each read gate RG and each write gate WG, is controlled by a program gate array PGA. Moreover, several PGAs are used in other locations to produce properly timed and programmed control signals, as shown for example, in association with the adder operation control 36. This drawing symbolism for the several PGAs in FIGS. 3A and 33 will be fully understood after reference is made to Case I, particularly Columns 39 and 40. Merely by way of example, if it were desired to read the AX number contained in the register A8 into the adder during program step 748, then a three-input AND gate may be used as the PGA associated with the read gate RG for that register; and the three inputs for that PGA would be connected to the units tens 4 and hundreds 7 output lines of the time base and digital sweep 39. If such reading of the AX number is to occur only in Mode 2, and when the control counter 42 is in state S7, that AND gate would be further qualified with inputs from the 2xxxx and S7 control lines leading from the mode selector 41 and counter 42. By building a plurality of such AND gates acting through OR gates, any PGA may be constructed so that it produces an output signal, and enables the associated read or write gate during each of several different predetermined programming time steps.

Rather than to show by symbols written into each PGA block all of the conditions under which that PGA produces an output control signal, reference will be made in this application to appended programming Tables I through IV. With the background information set out in Case I, any person skilled in the art will know immediately how to construct any or all of the program gate arrays PGA here shown.

The three servo systems which include the respective servomotors XM, WM and ZM are diagrammatically illustrated in the right portion of FIG. 3. These servo systems will be fully understood from the cross reference made above to Case I. Briefly, however, the servo circuits 46, 47, 48 are all substantially identical; each one receives a corresponding one of the changeable input signals representing the numbers XSC, WSC, ZSC; each includes a comparator circuit which produces a response pulse at those instants when the digital sweep number (from the time base and sweep 39) agrees with the input number, so that the pulse is phased relative to the output of the sine wave shaper 40 according to the value of that input number; the output of the sine wave shaper 40 (in the form of two sinusoidal voltages in phase quadrature) is applied as excitation signals for resolvers 46a, 46b, 46c mechanically driven according to motions of the respective controlled members 21, 25, 14; each resolver supplies a feedback signal which is phased relative to the digital sweep according to the resolver rotors angular position and thus according to the linear position of the controlled member; each servo circuit contains a phase discriminator to produce'a d'c. output voltage which is agreeable in polarity with, and proportional in magnitude to, the phase difference between the comparator pulse and the feedback signal; and such dc. voltage is applied to the corresponding servomotor XM, WM or I ZM to make the latter operate in a direction and at a speed corresponding to the sense and magnitude of that phase difference. As the numbers XSC, WSC and ZSC progressively change, therefore, the servomotors XM, WM and ZM move the associated table 21, saddle 25,

and spindle 14 to keep the positions of the latter dyposition, as fully explained in Case I. It is to be realized,

however, that the servo input numbers XSC, WSC and ZSC are based on the lowest order digit values of the machine coordinate numbers XMP, WMP, ZMP and the latter must be complete numbers in order to ac commodate offsets and must be expressed in machine or base coordinates since the resolvers 46a, b, c are mechanically coupled to their corresponding machine elements so that they can'only supply feedback intelligence which is valid in terms of machine coordinates.

Finally, the apparatus shown in FIG. 38 includes a control flip-flop 49 which is set or reset (i.e., enabled or cleared) under certain conditions and during certain program time steps. For this purpose, two PGAs are connected to supply their output signals to the set and reset terminals of the flip-flop 49. When in the set state, the flip-flop makes its output ZACT and ZACT reside at logic l and voltage levels; and when the flipflop is inthe reset state, these outputs reside at logic 0 and l voltage levels. As will be made clear below, the flip-flop 49 thus produces a logic l ZACT signal when positioning movement along the W2 axis is to be accomplished by motion of the spindle 14, i.e., when the Z servo system 'is to be active; and it produces a ZACT logic l signal when the spindle servo is inactive and W2 positioning movement is to be accomplished by the W servo system and the saddle 25. The physical organization of the flip-flop 49 and its associated PGAs will be understood from Case l, where a flip-flop 455 in FIG. 40f serves as an example.

From the foregoing, it willbe understood how the several-PGAs of FIGS. 3A and 3B are structurally or ganized to-produce output signals properly timed under certain logically specified conditions, and thus the remaining details of the apparatus can be here concretely designated simply by setting forth the sequential programmed operations which are to be carried out. For

this purpose, there are appended as the last pages of the' present specification Tables I, II, III and IV. These tables are, in all respects excepting those aspects pertaining to the present invention, identical to Tables I through IV in Case ll; and all operations and apparatus (excepting for those improvements which constitute an embodiment of the present invention) may'be understood fully from reading Case II. It will suffice therefore to note that Tables I through IV in the present application use the axis designation wz" in lieu of the designation Y employed in Case I and Case ll; and it will suffice to describe here only those sequences of the overall operation which are reflected in present Tables I through [V to the extent that they differ from the corresponding tables of Case II.

B. The Method Steps Before discussing appended Tables l-lV, the method here to be carried out may be summarized in generalized form. First,.in controlling the successive positioning of a part (the saddle 25 including workpiece l9 thereon) relative to a member (the spindle 14 including the tool 15 therein) which are independently movable along a common axis, a first changeable number (wzCP) is signaled (by the register A7) such that its value represents the desired part coordinate position of the member relative to the part. More specifically, this number represents the W2 part coordinate PC of the tool tip TT relative to the origin 0 as shown in FIG. 2, and when either the spindle or the saddle is to be moved to change the part coordinate distance PC, the first number wxCP is progressively changed until it equals the newly desired value of that part coordinate PC.

Second, a second changeable number (ZTM) is signaled (by register A15) to dynamically represent at all times the position of the member (spindle 14) in base coordinates measured from a second origin on or fixed relative to a base. More specifically, the second number ZTM represents the coordinate value MZ measured along the Z base coordinate scale relative tothe origin 0 as shown in FIG. 2; and when the spindle is to be moved, the number ZTM will be progressively changed.

Third, in response to the signaling of a new value for a command number, i.e., a new W word received from the reader 30, the first number (wzCP) is changed by an amount equal to the difference between the new and previous values of that command number. As will be explained, this isaccomplished by subtracting the newly read value of a W command end point, which appears in buffer B2 as the number wzEP, from the previous, value which is stored in register. A2 as the number wzCEP, thereby to compute the difference K which represents the W2 axis component of the desired path segment. The number wzCP is then changed in a sense and by an amount equal to K through repreated functioning of the arithmetic unit or adder 35.

Fourth, the first number (wxCP) is also changed by an amount corresponding to the change in the second number (ZTM) which occurs whenever the member is moved relative to the base. More specifically, if the spindle 14 is moved and the number ZTM changes from a first value ZTM, to a second value ZTM then the number wzCP is changed by an amount equal to [ZTM ZTM through operations of the adder 35.

Fifth, the movable part (saddle 25 including workposition coordinate MW (measured along the converse sign coordinate scale W) equal to [wzCP ZTM]. Thus, if ZTM increases by a predetermined amount, wzCP increases by the same amount, and the difference [wzCP ZTM] does not change, so that the saddle does not move and, very importantly, the number wzCP remains an accurate representation of the part coordinate distance PC.

The foregoing will become more clear as the method and apparatus are now described in greater detail.

C. Data Process Sequences When a block of data in active storage has been, in effect, fully executed, the control counter 42 advances to state S7 and the logic l signal on its output line S7 places the mode selector 41 in the Mode 2 condition,

as fully described in Cases I and II. In Mode 2, the operations designated in Table l (common to all modes) and those designated in Table III (applicable particularly to Mode 2) will be carried out during the next cycle period AT represented by the ten columns of one hundred time steps each, as shown in Table l. The data then in the buffer register will be transferred to the active registers, as fully described at pages 96-101 of Case II.

The fshorthand language utilized in present Tables I-IV will be fully understandable from Case I, and also from pages 93-96 of Case Il. Without further detail, therefore, it may be noted here that during either Column 2300 or 2800 in a cycle period AT for Mode 2 (and as shown in Table III), the lb and Kb numbers are read into the adder 35 from buffers B and B6, individually added to zero, and individually written as new values for I and K in registers A3 and A4. Then, the control counter 42 advances to state S8 (see time steps 2382 or 2882 in Table III) and the system goes into Mode 3.

In Mode 3, appended Table IV (along with Table I) is applicable. As shown for time steps 35 to 39 in either .the 3300 or 3800 columns of a AT period, the buffer numbers XEP, wzEP, TFB and Pb are read from registers B1, B2, B8, B3 and respectively transferred into active registers A1, A2, A10, A5 .where they become the new values for XCEP, wzCEP, TFA and Pa, On step 3379 or 3879, the control counter advances the state S8 to state S9, so the system is taken out of Mode 3 At step x991 in Table I and during that same period AT, the signal TRR is set to a logic 1" value, and this causes the tape control logic 31 (FIG. 3A) to start the tape reader 30. On steps x992 through x999 the control counter is advanced through successive states, andends up in state S1 so that the system is returned to Mode l.

The tape reader now runs until it senses an EL code at the end of the block being read, after which the TRR signal is removed and the tape reader stops. During this reading operation, the data in active storage are being I utilized to generate changing servo input signalsso that the active block is being executed. And, when the tape reader stops, a logic signal DPR appears to signify that data processing is required. The buffer registers contain newly read values of XEP, wzEP, Fb and Mb. It should be noted specifically, however, that the value of the number wzEP which has just been received in register B2 is the value ofeither a W word or a Z word contained in the tape block which has just been read because no tape block can contain both a W word and a Z word, and the routing circuits 32 send the numerical value of either such word to the buffer B2 where it becomes the wzEP number. The latter number thus represents the end point part coordinate to be reached by movement of either the saddle or the spindle when the just-read block of data is executed. On the other hand, information indicating whether that block of data is to be executed by W movement or Z movement is signaled from circuits contained within the decoder 32. More specifically, if a block of data just read contains either a W word or a Z word, then the logic signal NDW or the logic signal NDZ will respectively be set to a logic l voltage level.

Referring specifically to appended Table l, the data process functions there set out differ slightly from those described in Case II, but only the differences will be here described. At step x055 in the x000 column of Table I, the legend EDP DPR signifies enable DP it the DPR signal exists. Thus, the data process" flipflop of Case [I will be enabled or set. Time steps 056-059 of Table I will be discussed later in this specification, and it may be observed here that on time steps 060 through 065 the buffer values of lb and Kb are computed and stored. The equations for these operations are:

XEP XCEP lb (6) wzEP wzCEP Kb (7) More particularly, on time step 060 the number XEP is read from register Bl into the cleared adder 35. On time step 061, the number XCEP is read from register A1 into the adder along with a control signal sx (generated by the operation control 36 and its associated PGAs) which calls for the adder to depart from its ordinary addition function and to perform instead a subtraction function. On time step 062, the result of the subtraction XEP XCEP is written from the output trunk AOT into register as the number lb if the DP signal is then a logic l indicating that data processing is in progress. The CAR" symbol for time step 062 in Table I signifies that a PGA supplies a clearing" signal to the adder 35 so that the accumulator is cleared or set to zero. On time step 063, the number wzEP is read from register B2 into the cleared adder; and on time step 064 the number wzCEP is read into the adder along with a subtraction control signal sx. The difference wzEP wzCEP which equals the number Kb ap pears in the accumulator on step 065 and is written into the register B6 as the number Kb if the logic signal DP then has a logic l level. Thus, from programmed part coordinate end points, the axis components lb and Kb corresponding to the path segment to be traveled are computed.

At time steps 066 through 092 in Table I, the adder 35 is programmed to compute the path segment length D. The details of this computationalsequence are not given in Table I because they are known to those skilled in the art. It will suffice to say that the numbers lb and Kb are individually read from their buffer registers and squared, the two squared values are summed, and the square root of that sum is computed. The result is D V Ib Kb (8) which appears in the accumulator on step 092. At that programstcp, the numerical value of the path segment D is written into the buffer B7 if the DP logicsignal is then at a 1" level.

Further, in Column x600 ol'Tahle l the data proeess ing operations are continued to compute the value ol TFB which is to be storedin the register B8 on time step x691. Thereafter, the data ready signal DR is enabled at time step x697 and the DP signal is cleared at step x699, all as fully described in Case ll. As a result'of these data processing sequences which follow immediately after a new tape block has been read, the buffer registers B-B8 receive computed new data representing new values of lb, Kb, D and TFB.

D. Control of the W and Z Movements In carrying out the present invention, certain algebraic relations are followed to change numbers so that the system properly responds to W commands, or indeed both W and Z commands, which are expressed in part coordinates by the programming technician and applied as part coordinate numbers (W or Z words) on the input record (punched tape). Each of a series of equations will now be discussed to explain its significance, and the manner in which the equations are physwhich follow each reading of a tape block, and as explained immediately above, involve the computation: wzEP wzCEP Kb (7) This computation is carried out at program steps x063 through x065 in Table l, and the PGA's associated with the registers B2, A2 and B6 are wired (as the reader will now fully understand from the foregoing cross references) to carry out that computation. In effect, therefore, the distance Kb computed during the data processing sequences represents the distance to be moved (by either the saddle or the spindle when a W word or a Z word has been received) to change this part coordinate position of the tool tip T'T from its previous value (i.e., the block n value of wzCEP) to its newly signaled value (i.e., the numerical value ofa W or a Z word and which becomes the "block n 1 value wxEP).

b. Transfer Operations When the active block n is fully executed, the block (n 1) data are transferred to the active registers as hereinabove described with reference to Tables lll and IV. As a review, the transferring operation results in:

i. The end point coordinate wxEP being placed as a new value in the active end point coordinate register A2 as the new number wxCEP, where it is ready for use in computing (according to Equation 7) the nextfollowing component distance Kb when the next successive tape block is read;'and

ii. The number Kb is transferred into the register A4 where it becomes the new active number K.

Besides these direct numerical transfers, however, means are provided to signal whether the W2 axis command data just transferred into the active registers calls .for a W movement of a Z movement. As shown in FIG. 3A, and a noted above, the logic signal NDW or NDZ will reside at a logic l level if the last-read block contains a W word or a Z word, respectively. Then, during 1 the transfer operation which is designated in Table IV (and specifically at either. time step 3334 or 3824) the ZACT flip-flop 49 will be enabled if thesignal NDZ is a logic l or it will be cleared if the signal NDW is a logic l Thus, the flip-flop output signal ZACT will be at a logic 1" level when'the block (n I) data reaches the active registers providing that block contained a Z word. Conversely, the signal ZACT will be at a logic l level if the block (n 1) contained a W word. The designation ZACT may thus be viewed as standing for Z active since it indicates whether data, stored in the active register and being executed, are to produce movement by operation of the Z servo system rather than by operation of the W servo system.

c. Execution of wz Axis Positioning After a block of data containing a W or Z word has been transferred into the active registers and is being executed, either the W servo or the Z servo will be operational to move the saddle 25 or the spindle 14 depending upon whether the signal ZACT or the signal ZACT is a logic 1 The other servo will hold its corresponding machine element stationary. But the form ulation and changing of the servo input numbers WSC and ZSC differs from that described in Cases 1 and II for the X and Y servo input numbers XSC and YSC.

The changes to be effected during each cycle period AT are:

If either ZACT l or ZACT l lf ZACT l set neu' neu' If ZACT l wzCP WOFF TOFF ZTM =WMP,,,,,,.1 l 3) Set WSC WMP,,,,,,. (14) The quantity Awz in the foregoing equations represents the macrowave distance" to be traveled along the common wz axis by motion ofeither the spindle 14 or the saddle 25 during each period AT (which, it will be recalled, has been assumed by way of example-as being one-fiftieth of a second). The Awz number is stored in sirably followed in the present case to progressively change the input numbers WSC and ZSC for the W and Z servo systems. In this way, and as a specific example, the saddle or the spindle is moved through onetenth of the distance Aws during each tenth of a period AT, so that the servo can track smoothly and accurately. It may thus be further noted that during each time column (that is, during each tenth of a period AT) shown in Table l, the micromove updatings occur according to the equations:

lf ZACT l ZSC Awz/IO ZSC 1 15) If ZACT l WSC t Awz/IO WSC,,,.,,. These functions indicated by Equation ('15) and l6) take place in each of Columns x000 through x800, and afinal or tenth updating" takes place in the time column x900 (Table l) to assure that full updating change equal to Awz isaccomplished during each period AT.

(1. Details of the W2 Axis Movement Execution It will be realized that when execution of a previous block of active data has been completed, and just before a new data block is transferred into the active registers, the numbers XCP and wzCP will have been incrementally changed until they equal the then-signaled end point part coordinates represented respectively by are used to perform the micromove updating of the X axis servo input number XSC and also such updating of either the WSC or ZSC servo input number. By way of review, the micromove updating for the X axis will first be considered. The organization of the PGAs and the sequential functions are designated at steps x016 through x021 in the x000 column of Table I. As there shown, the number AX is read into the cleared adder on step x016; it is shifted right (in response to the control signal SR1 supplied by a PGA to the adder) one decimal place on step x017, thereby producing a numberequal to AX/l in the adders accumulator; and the servo input number XSC is read from the register A16 additively into the adder on step X018. The sum XSC AX/l0 appears'in the accumulator on step x019 and remains there until step x021 when it is written as a new number XSC backinto the register A16. As indicated by the horizontal arrows drawn in Table I, this same position occurs nine times, i.e., during each of the other columns (excepting column x400) of each AT pe- -riod. In the x400 column, however, at steps x403 through x421, a tenth updating occurs. As shown for these time steps:

i. The values AX and XCP are added, and the result written in register A6 asia new value of XCP.

ii. The new value of XCP is added to any X axis offset number XOFF (stored in an offset register not shown in'FIGS. 3A and 3B) and the resultis written as a new value for XMP in the register A1 1. The number XMP is thus changed by the amount AX once during each period AT.

iii. The new value of XMP is read into the cleared adder on step x416 and then its last .four digits are writvolve exactly the procedure described in Cases I and II with respect to control of the X and Y axis motions there treated.

In the present case, however, the macromove and micromove updates for the W and -Z servos are modified to conform to the foregoing Equations and (16).

Referring to Column x000 in Table l, at time step x021 the macromove number Awz is read into the cleared adder, and on time step x022 it is shifted one place to the right so that the accumulator holds the value Awz/10. On step x023 or step x024, the servo-input number WSC or ZSC is read into the adder from register A17 or register A18, but only if the signal ZACT or the signal ZACT is respectively a 1 That is, the WSC or the ZSC number is utilized depending upon whether the block of data originally read from the punched tape and now in the active registers originally contained a W word or a Z word. The sum which appears in the adder accumulator on step x025 is thus either i. WSC Awz/10 if ZACT 1, or (17) ii. ZSC Awz/10 if ZACT 1. (18) That sum is then written back" into the register A17 or the register A18 respectively on time step x026 or time step x030, but only if ZACT 1 or ZACT 1, respectively. Thus, a micromove updating of the number WSC or the number ZSC occurs only if the W servo or the Z servo is to be active in carrying out the commanded positioning along the W2 axis.

The same selective wz axis micromove updating occurs also during the same time steps in each of Columns x100 through x800, as indicated by the horizontal arrows drawn in Table l. Thus, Equations l5) and 16) are physically implemented, and motion of the saddle or spindle takes place as the number WSC or the number ZSC progressively changes, depending upon whether the data block being actively executed originally contained a new W word or a new Z word.

The tenth update" for the W2 axis occurs in Column x900 of Table I and the operations there designated physically carry out Equations (9) through l4). Referring first to time steps x903 through x906, the adder is cleared and the macromove number Awz is read into the accumulator on time steps x903 and x904. The number wzCP is read additively into the adder on step x905 so that the sum wzCP Awz appears in the accumulator during step x906. During this latter step, that sum is written back into the register A7 as the updated value wzCP Therefore, the operation represented by Equation (9) is effected during each period AT and regardless of whether the move commanded in part coordinates along the W2 axis is to be accomplished by saddle motion (with ZACT l or by spindle motion (with ZACT l Of course, when this operation continues for a sufficient number of ATs to change the starting value of W2C? until it euqals the end point coordinate value wzCEP, then the, active block is fully executed and the number wzCP has been changed by an amount equal to the component K.

On step x900 in Table l, the adder is cleared and the macromove number Awz is read. On step x901, the number ZTM is additively read from the register A15, so that during step x902 an updated value ZTM appears in the accumulator. On that time step, the new value of ZTM is written back into the register A15 but only if the ZACT signal is then a logic "1". In this way, Equation 10) is carried out during each period AT, but only if the spindle servo is to be operational, because only under these circumstances will the signal ZACT 1 to enable the *writing" to occur on step x902.

On time step x927 the adder is cleared. and the value of ZTM (previously established during time step x902) is read into the accumulator. On time step x928, the number ZOFF is read additively from the register A21, so that the sum ZTM ZOFF appears in the accumulator. During time step x929, that sum is written as a new value of ZMP into the register A13, but only if the spindle servo system is active and ZACT I. Thus, Equation (I1) is. accomplished during time steps x927 through x929, but only is ZACT l.

The new value of ZMP remains in the accumulator on time step x930, and the last four digits thereof are written as a new value for the number ZSC into the register A18, but again only if ZACT 1. This accomplishes the operation represented by Equation (12).

On the other hand, if the W servo for the saddle 25 is to be operational, and ZACT l, the operations represented by Equations (13) and (14) are carried out in lieu of the operations represented by Equations (l), (l1) and (12). Observe that on time step x906 the accumulator will always hold the just-previously updated value wzCP On time step x907 the offset number WOFF is read additively from the register A19 so that the sum wzCP WOF F appears in the accumulator. On time step x908 the offset TOFF is read from register A20 and added to that previous sum; and on time step x909, the number ZTM is read, along with a subtraction control signal sx, into the adder so that the new accumulator number becomes equal to wzCP,,,,,,. WOFF TOFF ZTM This result is then written as a new value for the number WMP in the register A12 on time step x915, but only if ZACT Lin other words, the

whole sequence of operations for steps x907 through x915 is ineffective unless ZACT= 1 because the adder is cleared on the following time step x916. In this way, the function represented by Equation 13) is physically carried out, but only if ZACT 1.

On timestep x921, the then existing value of the number WMP is read into the cleared adder where it remains until time step x926. On the latter time step, the last four d'igitsof this number are written as a new value of WSC into the register A17, but only if ZACT 1. Thus, Equation (14) is implemented on time steps x921 and x926. e. Examples of wz Axis Positioning Operations To enable a better appreciation of the overall operation and advantages which the present method and apparatus yield, two specific examples of positioning operations along thewz axis will be described with reference to FIGS. 4 and'S. It is to be noted that the number 'ZOFF-in Equation (11,) has not yet been mentioned,

and that number will initially be assumed to have a value of zero. But its significance, when finite, will be explained during the following description of FIGS. 4

and 5. g a

Let it be assumed that the spindle 14 and the saddle reside initially in the relative positions shown by solid lines in FIG. 4. From what has been said earlier and from the dimensions shown,.it will be apparent that initially thechangeable numbers have the following values;

wzCP 12 (Part coordinate position of the tool tip, measured from workpiece origin 0 along the initial part coordinatescale CS1) ZTM =2 (Base coordinate position to spindle reference point RP2, measured from the origin 0 along the base coordinate scale CS2) I ZMP 2 (Same as ZTM, assuming that ZOFF is zero) ZSC last four digits of ZMP WOFF 6 (Distance along converse base coordinate scale CS3 between origin 0 and the reference point RPl) TOFF +3 (Distance along converse base coordinate scale CS3 between reference point RPZ and tool tip TT) WMP wzCP WOFF TOFF ZTM +12 +(6)+3(2)=+1l (Base coordinate position of saddle reference point RPl measured from the origin 0' along the converse base coordinate scale CS3) wzCEP 12 (Part coordinate end point for wz axis, as contained in the last-executed block and held in register A1) Let it be assumed now that a new block of command information has been read from the tape into buffer storage, and that the data includes a wz command which specifically is W-l-22. This designates that the saddle 25 is to be moved until the part coordinate of the tool tip, relative to the origin 0, is changed to a value of +22. The number thus stored in buffer B2 as wzEP becomes +22, the signal NDW from the decoder 32 becomes a 1", and the data processing operation described above with reference to steps x063 to x065 results in the number Kbin register B6 being set to Kb wzEP wzCEP +22 12 +10 When these data in buffer storage are transferred to the active registers, then K in register A4 becomes +10 wzCEP in register A2 becomes +22 and the macromove number Awz in register A9 becomes some small value equal to V- AT/D (+10). Moreover, the signal ZACT is set to 1" (See Table III).

Immediately after that transfer, and during each successive period AT, the number WSC isupd'ated b micromove amounts +Awz/10, as explained above with reference to time steps xx2l through xx30 in each of columns x000 through x800 of Table I. In consequence, the number WSC supplied as an input to the servo system changes in a positive sense, and the saddle begins moving toward the left (i.e., in a positive direction along scale CS3). When each tenth update" occurs (Col. x900 in Table I) during each AT, the number wzCP is increased by the amount +Awz, the number WMP is increased by the amount +Awz, and the number WSC is driven to equal WMP (i.e., is also increased by +Awz/l0).

This action continues until the active block of data is fully executed, at which time the number-wzCP, WMP and WSC will all have increased bythe amount K. ie, by +10, and the saddle will have moved from its initial position (solid lines in FIG. 4) to a new position (dashed lines inFlG. 4); and the several numbers will have changed to new finalvalues. That is:

As shown in FIG. 4, the origin 0 is moved to a final position 10 units to the left of its initial position, so that the part coordinate scale CS1 now occupies a new position and is represented by the scale CS1 in FIG. 4. The tool tip resides at the part coordinate position +22 on the displaced scale CS1, as required by the original W word command W+22.

Moreover, in reaching the final position of the scale 25, the number WMP changes toa new value, viz.

Ilmrl puririiiml ZTM WMP 12 +10) 6 3 (2) =+2l That is, the reference point RF! is now located at +21 on the converse base coordinate scale CS3, and the number WMP reflects that fact. The number WSC has increased by and so caused the W servo system to drive the saddle ten units to the right from its initial position. It is to be observed that the numbers ZTM and ZMP and ZSC have not changed, and the spindle remains at its original position, 2 on the base coordinate scale CS2. And most importantly, the number wzCP in its final value of =22 accurately represents the position of the tool tip in part coordinates along the common wz axis.

The operations are different, but produce the same positioning in part coordinates, if a wz positioning operation is to be effected in response to a Z command word contained in a block of data read from the program tape. Referring to FIG. 5, and as shown by solid lines, it is assumed that the saddle and spindle initially reside in the same initial positions shown in FIG. 4. That is, the initial numerical values are:

wzCP +12 on scale CS1 ZTM 2 on scale CS2 ZMP 2 on scale CS2 ZSC last four digits of ZMP TOFF +3 WMP wzCP WOFF TOFF ZTM 12 6 WMP +11 on scale CS3 wzCEP +12 on scale CS1 Now, let it'be assumed that a data block which contained a Z command word Z+5 has been read into buffer storage and data processed. As a consequence:

wzEP +5 in register B2 K wzEP WZCEP 5 12 7 When these data in buffer storage are transferred to the active registers then K in register A4 becomes 7 wzCEP in register A2 becomes +5 and the macromove number Awz in register A9 becomes some small value 'equal to V-AT/D (7), i.e., a

negative number. Moreover, the signal ZACT from flip-flop 49 is set to 1, as indicated in Table III.

Immediately after that transfer, the number ZSC is updated by micromove amounts Awz/ 10, as explained with reference to time steps xx2l through xx30 for columns x000 through x800 in Table I. The number ZSC begins to change in a negative sense, and the spindle 14 is thus driven toward the left (i.e., in a negative diree-' tion along the scale CS1). When each tenth update occurs (Col. x900 in Table I) during each AT, the numbers wzCP and ZTM are both decreased (increased in a negative sense) by the negative Awz quantity during each period AT (according to Equations (9) and (10) set forth above). Thus, the number ZMP is also correspondingly decreased (increased negatively) according to Equation (II); and the number ZSC is increased negatively by Awz/10 when it is driven to agree with ZMP, according to Equation (12).

This action continues until the active block of data is fully executed, at'which time the numbers wzCP, ZTM, ZMPand ZSC have all been changed by a total amount equal to'K (i.e., by 7). The spindle will therefore have been moved from its initial position solid lines, FIG. 5) to its new position (dashed lines. FIG. 5). The several numbers will have been changed to new final values,

VIZ.

WZcP WZCPmm K +5 As shown in FIG. 5, the spindle will have moved to locate the tool tip TT at part coordinate +5 relative to the origin 0 and as measured on the scale CS1. Thus the final part coordinate physically agrees with the assumed command Z+5, and the number wzCP ends up equal to wzCEP which is valid in part coordinates.

Moreover, in reaching the final position of the spindle as shown in FIG. 5. the number ZTM changes to a new value, i.e.,

finuI iuiliul K 2 9 and the number ZMP reaches a new final value ZMPy- ZTM 9 0 9 That is, because ZMP has been changed from its initial value of 2 to its final value of 9, the reference point RP2 moves from the coordinate 2 to the coordinate 9 on the base coordinate scale CS2, as shown in FIG. 5. Because ZMP has changed by 7, the servo input number ZSC also changes by 7 in small steps and the spindle servo motor ZM drives the spindle to the final position shown in FIG. 5. I

While the spindle was moving from its initial to its final position, the saddle remained stationary, as plainly shown in FIG. 5, because Equations (l3), (l4) and (I6) simply cannot be performed when the signal ZACT l and the signal ZACT 0, as previously explained. But if Equation (e) were carried out just prior to the start of the spindle move illustrated in FIG. 5, the initial values would make WMP,-,,,-,,-,,, have the value:

WMP,,,,-,,-,,, wzCP WOFF TOFF ZTM 12 (6) +3 (2) =+11 Since under final conditions in FIG. 5 wzCP has changed by 7 and ZTM has changed by 7, when Equation (13) is next physically carried out, it will yield:

finul 5 3 In other words, WMP does not change, and the saddle 25 does not move, when the spindle is the member which executes a wz axis positioning operation. but the number wzCP does change to remain valid in part coordinates. This comes about because wzCP and ZTM are both incremented when the spindle moves, but by including ZTM as a negative term (Table I, Col. x900,

step x909) in Equation (13) for WMP, the values of WMP and of WSC do not change- Indeed, for this reason, the gating control ZACT shown at time step x915 in Table I may be omitted, and the Equation l 3) physically carried out during every AT because both wzCP and ZTM are incremented by Awz during each period AT if ZACT l and they act in opposite senses upon WMP so the latter will not change.

It may be desirable as a matter of convenience in some installations to have the origin for the spindle base coordinates offset from the origin for the saddle base coordinates. As treated thus far, FIGS. 4 and 5 deal with the situation where the scale CS2 applies to the number ZMP and along which the position of the reference point RPZ is measured; and the scale CS3 applies to the number WMP. The two scales CS2 and CS3 both have the same origin 0, and the latter scale is simply the converse (opoosite sign) of the former. If, in contrast, one physically sets up the Z servo system with a different origin 0" (FIGS.,4 and 5), then the offset distance between 0' and 0 can be dialed into the register A21, and the finite numerical value of ZOFF will be taken into account according to Equation (1 l) and as designated at time step x928 in Table I. This will not affect the operation as described above, except that the number ZMP will be offset" from the number ZTM. the ZMP value having significance with respect to the auxiliary base coordinate scale ACS2 in FIGS. 4 and 5,

and the number ZTM being measured along the principlebase coordinate scale CS2, the latter being viewable as the converse of the base scale CS3. If this is done in the example of FIG. 5, then the initial-values are:

I wzCP +12 on scale CS1 ZTM 2 on scale CS2 ZOFF.= -4

ZMP ZTM ZOFF 2 4 6 on scale ACS2 WOFF 6 TOFF +3 WMP +11 on scale CS3 -wzCEP +12 on scale CS1 After the spindle reaches the final position of FIG. 5, the final numericalvalues are:

wz CP on scale CS1 ZTM -9 on scale CS2 ZOFF *4 ZMP 9 4 13 on scale ACS2 WOFF 6 TOFF +3 "WMP +11 on scale CS3 -It will-be seen now that-the improvement of the present invention makes it possible for a programming technician always to write commands for an axis, along which two members are independently movable, in part coordinates reference to an origin which moves with one of the members. 'I-Ie need not keep track of the machine coordinate positions of the two members as they I are randomly and alternatively moved. And in the method and apparatus of the invention, part coordinate numbers are maintained valid by causing a command for a first member (spindle) not only to move that member but to equally modify two numerical terms '(e.g., wzCP and ZTM) which contribute in opposite I senses to the creation of a machine coordinate number -(e.g., WMP) for the second member (saddle), the changes in which result in changing servo-input signals for the second members servo system. E. Normalizing Spindle and Saddle Positions It may happen that with random and alternative W and Z moves programmed in part coordinates, the pro- .grammer may unknowingly call for the saddle to end up near the limit of its travel away from the headstock, and call for the spindle quill to be extended out of the headstock nearly to its maximum. Although it is unnecessary for the programmer to keep track of the masubsequent program blocks are read and executed. To

accomplish this, means are provided in the director of FIGS. 3A and 38 to respond to a special program code (here arbitrarily designated Ml2 )in such fashion that a Z word is treated as a command in machine coordinates. That Z word results in the spindle being moved to the corresponding position in machine coordinates while preserving all numbers which arevalid in part coordinates. And for this purpose, an artificial Z com mand in part coordinates is derived from the 2 word in machine coordinates contained in any program block which also contains an M12 code.

More particularly, when a block containing a Z word expressed in machine coordinates (along the scale CS2 in FiG. 4) and an M12 code is read from the punched tape, the M word buffer B4 (FIG. 38) receives the number 12 from the routing circuits 32 and the decoder 34 produces a l level signal on the M12 output line which is included in the several output lines M00 L M99. The Z word (in machine or base coordinates) is treated in the regular fashion by the routing circuits, and thus is stored in buffer B2 as a new value for wzEP. Of course, the NDZ and NDW signals become logic I and O values, as before. i

The system acts, however, to respond differently in its data processing sequences when the M12 signal exits at the output of decoder 34. In particular it causes the following arithmetic operation to take place before any other of the data processing" steps:

wzEP wzCEP ZTM wzEP |7) This simply says that the absolute Z coordinate value wzEP (read from a block containing the M12 code) is added to the wzCEP number (representing the part coordinate position to be reached after execution of the previous data block); and the ZTM number (the machine coordinate position of the spindle) is subtracted with the resultant number being newly stored in register B2 as a new value of wzEP.

Referring to Table I, Column x000 at steps x056 to x059, it will be seen that the PGA associated with the READ gate RG for the register B2 is wired to cause reading of the number wzEP into the cleared adder on step x056. On step x057 the number wzCEP is read in additively from register A1, and on step x058 the number ZTM is read subtractively (with an sx control signal) from the register A15. Thus, the adder on step x059 contains the arithmetic result:

wzEP l wzCEP ZTM This result is written" from the ACT back into the buffer B2 (but only ifMl2 l and DP l where it becomes a new value for wzEP, and one which is an artificial part coordinate command which will cause movement of the spindle to the base coordinate position represented by the original Z word. Topermit this entry of the new wzEP number from the adder output trunk AOT into the buffer register B2, a write gate is interposed between the ACT and parallel entry inputs of the register B2. The write gate 55 is controlled by a PGA 56 which is here shown for completeness as receiving inputs from timing lines Oxx, .x5x, xx9 and control signals M12 and DP. Thus on time step x059 the adder accumulator number is written" through the gate 55 into buffer B2 if the M12 code signal exists and if data processing is in progress as indicated by the enabling of the DP signal on previous time step x055.

The data processing" sequences proceed thereafter as described above, but on step x063 (Table I) when the number wzEP is read into the adder, that number is the artificial" value previously computed, and the artificial" value is used at steps x063 to x065 to compute Kb wzEP wzCEP. Thereafter the block data is transferred to active storage and executed as hereinabove described.

A concrete numerical example will make the forcgt ing more readily understandable. Suppose thatinitially:

M12 code and a Z word of 2-5. Therefore, initially When the computations of steps x056 through x059 are performed the new value for wzEP becomes 'wzEP wzEP wzCEP ZTM =5+8 (35) +38 Then when the new value for Kb is computed at steps x063 through x065, it becomes Kb wzEP wZCEP +38 8 30 .As this block of data is transferred to the active registers,.'the ZACT flip-flop will be set to make signal ZACT l, and execution will then proceed with K +30 and the initial values wzCP +8, ZTM 35, ZMP 35 (assuming that ZOFF is zero, so the auxiliary scale ACS2 is not used), and WMP +43. When execution has been completed,

i.-ZTM will have been changed from 35 to 5; ii. ZMP will have been changed from 35 to 5 and ZCS will have/changed by +30, so that the spindle will have moved 30 units toward the right as viewed in FIG.

iii. wzCP will have been changed from +8 to +38 and the tool tip will reside 38 units to the right of the part origin 0; and

iv. WMP will not have been changed; its computational formula will, however, have had value changes therein, from Initially: WMP wzCP WOFF TOFF ZTM Finally: WMP wzCP WOFF TOFF ZTM 38 (6) (3) (5) +40 After the spindle has been retracted to a known machine coordinate position (in this example, 5), the part coordinate number wzCP has thus been increased and remains valid. In order to make the saddle and the workpiece move closer to the cutter tip, the programmer can insert a regular W move in part coordinates; for example, he can insert a block with a W+l0 command and the saddle will move to the right until the tool tip is located 10 units to the right of the workpiece origin 0.

It will, of course, be understood by those skilled in the art that any program block calling for a W or Z move may also contain an X command, and the X movement will be carried out simultaneously with the spindle or saddle motion, so that contouring rather than simply point-to-point positioning is accomplished. Moreover, all of the operations and advantages here explained are obtained whether the contouring control system is operated in a linear or circular interpolation mode. 

1. The method of controlling the successive positions of first and second members independently movable along a common axis relative to a base in response to successive signals representing one or the other of two types of numerical commands (W or Z) designating movement by the first or the second member (25 or 14) to make the part coordinate position of the second member, as measured from a first origin (0) on or fixed relative to the first member, agree with the value of the numerical command, said method comprising a. in response to the signaling of either type of command, computing and signaling a first changeable number (K) equal to the difference between the new value and the previous value of a numerical command (K wzEP - wzCEP), b. signaling a second changeable number (wzCP) which represents the desired relative position of said members in part coordinates, c. signaling a third changeable number (ZTM) which represents the desired position of said second member (14) in base coordinates measured with reference to a second origin (0'') on or fixed relative to the base, d. in response to any new signaled value for the first number (K), changing the signaled value Of said second number by an amount equal to the first number, e. in response to a new signaled value for the first number (K) resulting from a new signaled command of the type (Z) designating movement of the second member, changing the signaled value of the third number by an amount equal to the first number, f. driving said second member along the base to keep its position in base coordinates equal to the value of said third number plus any applicable offsets, g. driving said first member along the base to keep its position in converse base coordinates equal to the difference between said second and third numbers plus any applicable offsets, h. in response to signaling of a numerical command of the type (Z) designating movement of said second member, accompanied by a special code signal (M12), inhibiting said step (a) and instead
 1. computing and signaling an artificial command number which is equal to the last-received command number plus the previously received command number minus the third number (wzEP + wxCEP - ZTM), and
 2. utilizing said artificial command number in carrying out said steps (a) through (g), whereby said second member is moved to a position in base coordinates which agrees with the value of the numerical command accompanied by the special code.
 2. In a system for controlling the successive positions of first and second members independently movable along a common axis relative to a base in response to successive numerical input command signals of either a first or second type (W or Z) designating movement by the first or second member (25 or 14) to make the part coordinate position of the second member, as measured from a first origin (0) on or fixed relative to the first member, agree with the value of numerical input command, the combination comprising a. means responsive to the signaling of a new numerical command of either type for computing and signaling a first changeable number (K) equal to the difference (wzEP - wzCEP) between the new command value and the previous command value, b. means for signaling a second changeable number (wzCP) representing the desired relative position of said members in part coordinates, c. means for signaling a third changeable number (ZTM) which represents the desired position of said second member (14) in base coordinates measured with reference to a second origin (0'') on or fixed relative to the base, d. means responsive to any new signaled value for the first number K for changing the signaled value of said second number (wzCP) by an amount equal to the first number, e. means responsive to a new signaled value for the first number (K), resulting from a new signaled command number of the second type (Z), for changing the signaled value of said third number by an amount equal to the first number, f. means responsive to signals representing said third number for driving said second member along the base to keep its position in base coordinates equal to the value of said third number plus any applicable offsets, g. means responsive to signals representing said second and third numbers for driving said first member along the base to keep its position in converse base coordinates equal to the difference between said second and third numbers plus any offsets, h. means responsive to a special code signal (M12) received along with a command signal of the second type (Z) for
 2. utilizing said artificial command number in carrying out said steps (a) through (g), whereby said second member is moved to a position in base coordinates which agrees with the value of the numerical command accompanied by the special code.
 2. computing and signaling an artificial command signal numerically equal to that command signal plus the previously received command signal minus said third number (wzEP + wzCEP - ZTM), and
 3. causing said means (a) to respond to said artificial command signal, whereby said second member will be moved to a position in base coordinates corresponding to the value of the command signal which was accompanied by said special code.
 3. The method of controlling the successive positions of a member movable along an axis relative to a base in response to successive signals representing numerical commands designating movement by the member to make the part coordinate position thereof, as measured from a first origin 0 on or fixed relative to the base, agree with the value of the numerical command, said method comprising a. in response to each signaling of a new numerical command, computing and signaling a first changeable number (K) equal to the difference between the new value and the previous value of the numerical command (K ZEP - ZCEP), b. signaling a second changeable number (ZCP) which represents the desired position of said member in part coordinates, c. signaling a third changeable number (ZTM) which represents the desired position of the member in base coordinates measured with reference to a second origin (0'') on or fixed relative to the base, d. in response to any new signaled value for the first number (K), changing the signaled value of said second and third numbers by an amount equal to the first number, e. driving said member along the base to keep its position in base coordinates equal to the value of said third number plus any applicable offsets, and characterized by the improvement which includes f. in response to the signaling of a numerical command accompanied by a special code signal (M12), inhibiting said step (a) and instead i. computing and signaling an artificial command number which is equal to the last-received command number plus the previously received command number minus the third number (ZEP + ZCEP - ZTM), and ii. utilizing said artificial command number in carrying out said steps (a) through (e), whereby said member is moved to a position in base coordinates which agrees with the value of the numerical command accompanied by the special code and said second number continues accurately to represent the position of the member in part coordinates.
 4. The method of controlling the successive positions of a member movable along an axis relative to a base upon which a part is mounted, said method comprising the steps of a. successively signaling in digital binary form the numerical values of successive position commands, a1. each of said position commands being of a first type (ZEP) or a second type (ZEP with a special code M12) which respectively define (i) a commanded position in part coordinates measured from a first origin (0) on or fixed relative to said base, and (ii) a commanded position in base coordinates measured from a second origin (0'') on or fixed relative to said base but displaced from the first origin, b. signaling a first changeable number (ZCP) which numerically represents the desired position of said member with reference to the first origin (0), c. signaling a second changeable number (ZTM) which numerically represents the desired position of said member with reference to the second origin (0''), d. in response to signaling of a new position command of the first type, computing and signaling a third changeable number (K) equal to the difference between the new value and the previous value of the position command (K ZEP - ZCEP), e. in response to the signaling of a new position command of the second type, computing and signaling said third number (K) to make it equal the difference between (i) the sum of the new and the previous commands and (ii) said third number (K ZEP + ZCEP - ZTM), f. in response to any new signaled value for said second number (K), progressively changing the signaled values of said first and second numbers (ZCP and ZTM) by identical amounts equal to said third number, and g. driving said member along the base to keep its position as measured from said second origin (0'') always substantially in agreement with the signaled value of said second nUmber. 